PM 們常常聽到工程師們說想要 CI/CD,而我們可以理解的角度則是發版流程自動化。
接著,就一起來認識這個如果成功實踐了,就是大家福音的 CI/CD。
各組工程師們寫 code 其實就很想從一個主枝幹上長出小支幹,大家在自己的小支幹寫完功能後,再手動把小支幹跟主枝幹匯合起來。但麻煩的是,不同工程師在寫 code 時,寫的內容其實是可能會彼此有衝突的,如果等到要一起交付程式碼時,才發現彼此的 code 有衝突,這時就會延到交付的時間,而 CI 的出現,則是可以提前解決各種程式碼的衝突。
CI 就是讓開發者們可以在提交小支幹到主枝幹時,觸發一連串的自動化過程,系統可以自動檢查是否有衝突,這樣讓工程師們可以頻繁地進行「交付 > 檢查是否有衝突> (有衝突就修改) > 持續交付」的流程中,讓發版前不會突然產生意外的驚嚇,大大的提升大家的安全感。
持續交付 (Continuous Delivery)則是通過 CI 測試的程式碼會自動打包,只要工程團隊確認沒問題,就可以手動發佈到正式環境,將功能推上線。而另外一個持續部署 (Continuous Deployment),則是將後續的手動發佈,也變為自動發佈,只要通過 CI 的流程,程式就會自動上版,減少工程師很多發版的手動作業。
就如同敏捷的概念,小步快跑測試驗證,CI/CD 最大的益處就是可以將程式碼分批次的測試/發佈,一但有發現需要修復的地方,也可以不用一次推回到很前面的版本,對於 PM 及開發團隊在時間投入上,都會有更高品質的產出。